export default {
  data() {
    return {}
  },
  methods: {
    /**
     * 列表数组排序
     * @param list  [Array]    要进行排序的数组
     * @param field  {String}  要进行排序的字段
     * @param reduce {Boolean} 排序规则 默认为正序排列    false 正序  true 倒序
     */
    mixinsSort(list, field, reduce = false) {
      let _list = list.concat([])

      let arr = field.split(':')

      if (reduce) {
        // 倒序
        _list = _list.sort((a, b) => {
          let val1 = a[arr[0]], val2 = b[arr[0]]

          if (arr.length > 1) {
            for (let i = 1; i < arr.length; i++) {
              val1 = val1[arr[i]]
              val2 = val2[arr[i]]
            }
          }
          return this._compare(val2, val1)
        })
      } else {
        // 正序
        _list = _list.sort((a, b) => {
          let val1 = a[arr[0]], val2 = b[arr[0]]
          if (arr.length > 1) {
            for (let i = 1; i < arr.length; i++) {
              val1 = val1[arr[i]]
              val2 = val2[arr[i]]
            }
          }
          return this._compare(val1, val2)
        })
      }
      return _list
    },

    _compare(a, b) {
      // 小于 0 ，那么 a 会被排列到 b 之前
      // 等于 0 ， a 和 b 的相对位置不变
      // 大于 0 ， b 会被排列到 a 之前
      if (a < b) {
        return -1;
      }
      if (a > b) {
        return 1;
      }
      return 0;
    }
  }
}